<?php

class HttpAjax extends TPage {

//<editor-fold defaultstate="collapsed" desc="EliminarEmpresa">
  /**
   * elimina una empresa
   * @param <type> $idEmpresa
   * @return <type>
   * @author VSR, 11/11/2011
   */
  private function eliminarEmpresa($idEmpresa) {
    $retorno = "";

    try {
      $retorno = WfEmpresa::eliminarDatos($idEmpresa);
    } catch (Exception $e) {
      $retorno = Sistema::CODIGO_SQL_ERROR;
    }
    return $retorno;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="EliminarPlantilla">
  /**
   * elimina una plantilla
   * @param <type> $idPlantilla
   * @return <type>
   * @author VSR, 24/11/2011
   */
  private function eliminarPlantilla($idPlantilla) {
    $retorno = "";

    try {
      $retorno = WfPlantilla::eliminarDatos($idPlantilla);
    } catch (Exception $e) {
      $retorno = Sistema::CODIGO_SQL_ERROR;
    }
    return $retorno;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="EliminarWorkflow">
  /**
   * elimina un workflow
   * @param <type> $idWorkflow
   * @return <type>
   * @author VSR, 07/01/2012
   */
  private function eliminarWorkflow($idWorkflow, $idUsuario) {
    $retorno = "";

    try {
      //se deja funcion para eliminar fisicamente los registros
      //$status = WfWorkflow::eliminarDatos($idWorkflow);
      $status = WfWorkflow::eliminacionLogica($idWorkflow, $idUsuario);
    } catch (Exception $e) {
      $retorno = Sistema::CODIGO_SQL_ERROR;
    }
    return $retorno;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="EliminarContactoEmpresa">
  /**
   * elimina el contacto de la empresa en sesion
   * @return <type>
   * @author VSR, 08/05/2012
   */
  private function eliminarContactoEmpresa() {
    $retorno = "";
    $indiceContacto = $this->Request["indiceContacto"];

    try {
      $retorno = Utilidades::eliminarFilaSesion($indiceContacto, WfEmpresaContacto::SESION_LISTADO);
    } catch (Exception $e) {
      $retorno = Sistema::CODIGO_SQL_ERROR;
    }
    return $retorno;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="EliminarWorkflowSesion">
  /**
   * elimina el contacto de la empresa en sesion
   * @return <type>
   * @author VSR, 08/05/2012
   */
  private function eliminarWorkflowSesion() {
    $retorno = "";
    $indice = $this->Request["indice"];

    try {
      $retorno = Utilidades::eliminarFilaSesion($indice, WfWorkflow::SESION_LISTADO);
    } catch (Exception $e) {
      $retorno = Sistema::CODIGO_SQL_ERROR;
    }
    return $retorno;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="VerificarDuplicidadRut">
  /**
   * verificar si el rut ya existe en base de datos
   * @return string
   * @author VSR, 04/05/2011
   */
  private function verificarDuplicidadRut() {
    $existe = "0";
    $id = urldecode(Utilidades::isNull($this->Request["id"], "-1"));
    $valor = urldecode(Utilidades::isNull($this->Request["valor"], "-1"));

    try {
      $existe = WfEmpresa::verificarDuplicidad($id, $valor, "Rut");
    } catch (Exception $e) {
      $existe = "0";
    }
    return $existe;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="VerificarDuplicidadRazonSocial">
  /**
   * verificar si el razon social ya existe en base de datos
   * @return string
   * @author VSR, 04/05/2011
   */
  private function verificarDuplicidadRazonSocial() {
    $existe = "0";
    $id = urldecode(Utilidades::isNull($this->Request["id"], "-1"));
    $valor = urldecode(Utilidades::isNull($this->Request["valor"], "-1"));

    try {
      $existe = WfEmpresa::verificarDuplicidad($id, $valor, "RazonSocial");
    } catch (Exception $e) {
      $existe = "0";
    }
    return $existe;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="VerificarDuplicidadNombre">
  /**
   * verificar si el nombre ya existe en base de datos
   * @return string
   * @author VSR, 13/11/2011
   */
  private function verificarDuplicidadNombre() {
    $existe = "0";
    $id = urldecode(Utilidades::isNull($this->Request["id"], "-1"));
    $valor = urldecode(Utilidades::isNull($this->Request["valor"], "-1"));

    try {
      $existe = WfEmpresa::verificarDuplicidad($id, $valor, "Nombre");
    } catch (Exception $e) {
      $existe = "0";
    }
    return $existe;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="VerificarDuplicidadUrl">
  /**
   * verificar si la url ya existe en base de datos
   * @return string
   * @author VSR, 13/11/2011
   */
  private function verificarDuplicidadUrl() {
    $existe = "0";
    $id = urldecode(Utilidades::isNull($this->Request["id"], "-1"));
    $valor = urldecode(Utilidades::isNull($this->Request["valor"], "-1"));

    try {
      $existe = WfEmpresa::verificarDuplicidad($id, $valor, "Url");
    } catch (Exception $e) {
      $existe = "0";
    }
    return $existe;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="VerificarDuplicidadPlantillaNombre">
  /**
   * verificar si el nombre ya existe en base de datos
   * @return string
   * @author VSR, 24/11/2011
   */
  private function verificarDuplicidadPlantillaNombre() {
    $existe = "0";
    $id = urldecode(Utilidades::isNull($this->Request["id"], "-1"));
    $valor = urldecode(Utilidades::isNull($this->Request["valor"], "-1"));

    try {
      $existe = WfPlantilla::verificarDuplicidad($id, $valor, "Nombre");
    } catch (Exception $e) {
      $existe = "0";
    }
    return $existe;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="VerificarDuplicidadPlantillaClasePagina">
  /**
   * verificar si el nombre ya existe en base de datos
   * @return string
   * @author VSR, 24/11/2011
   */
  private function verificarDuplicidadPlantillaClasePagina() {
    $existe = "0";
    $id = urldecode(Utilidades::isNull($this->Request["id"], "-1"));
    $valor = urldecode(Utilidades::isNull($this->Request["valor"], "-1"));

    try {
      $existe = WfPlantilla::verificarDuplicidad($id, $valor, "ClasePagina");
    } catch (Exception $e) {
      $existe = "0";
    }
    return $existe;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="ObtenerComboPlantillaJSON">
  /**
   * obtiene las plantillas relacionadas con la empresa
   * @return <type>
   * @author VSR, 27/11/2011
   */
  private function obtenerComboPlantillaJSON() {
    $strJSON = "";
    $idEmpresa = Utilidades::isNull(urldecode($this->Request["idEmpresa"]), "-1");
    $idPlanillaSeleccionada = Utilidades::isNull(urldecode($this->Request["idPlanillaSeleccionada"]), "-1");

    try {
      $arr = WfWorkflow::obtenerComboPlantillaJSON($idEmpresa, $idPlanillaSeleccionada);
      if (!is_null($arr)) {
        $arr = Utilidades::utf8_array_encode($arr);
        $strJSON = json_encode($arr);
      }
    } catch (Exception $e) {
      $strJSON = Sistema::CODIGO_SQL_ERROR;
    }
    return $strJSON;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="ObtenerUsuariosJSON">
  /**
   * obtiene los usuarios relacionados con la empresa
   * @return <type>
   */
  private function obtenerUsuariosJSON() {
    $strJSON = "";
    $idEmpresa = Utilidades::isNull(urldecode($this->Request["idEmpresa"]), "-1");

    try {
      $arr = WfWorkflow::obtenerUsuariosJSON($idEmpresa);
      if (!is_null($arr)) {
        $strJSON = json_encode($arr);
      }
    } catch (Exception $e) {
      $strJSON = Sistema::CODIGO_SQL_ERROR;
    }
    return $strJSON;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="ObtenerPermisosPasoJSON">
  /**
   * obtiene los permisos del paso para configurar
   * @return <type>
   * @author VSR, 30/11/2011
   */
  private function obtenerPermisosPasoJSON() {
    $strJSON = "";

    try {
      $arr = WfWorkflow::obtenerPermisosPasoJSON();
      if (!is_null($arr)) {
        $strJSON = json_encode($arr);
      }
    } catch (Exception $e) {
      $strJSON = Sistema::CODIGO_SQL_ERROR;
    }
    return $strJSON;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="ObtenerTablaPasos">
  /**
   * obtiene el listado de pasos del workflow
   * @return <type>
   * @author VSR, 04/12/2011
   */
  private function obtenerTablaPasos() {
    $html = "";
    $idWorkflow = $this->Request["idWorkflow"];
    $themeBaseUrl = urldecode(Utilidades::isNull($this->Request["themeBaseUrl"], ""));
    $sb = new StringBuilder();
    $ARRAY_LISTADO_PASOS = 0;
    $ARRAY_LISTADO_APROBADORES = 1;
    $ARRAY_LISTADO_PERMISOS = 2;

    try {
      $arr = WfWorkflow::obtenerPasos($idWorkflow);
      if (is_null($arr)) {
        $totalRegistros = 0;
      } else {
        $arrListadoPasos = $arr[$ARRAY_LISTADO_PASOS];
        $totalRegistros = count($arrListadoPasos);
      }

      $sb->appendLine("<input type=\"hidden\" id=\"txtTotalPasos\" value=\"" . $totalRegistros . "\" />");
      $sb->appendLine("<table id=\"tblPasos\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">");
      $sb->appendLine("  <thead>");
      $sb->appendLine("    <tr>");
      $sb->appendLine("    <th>Paso</th>");
      $sb->appendLine("    <th>Nombre Paso</th>");
      $sb->appendLine("    <th>Aprobadores</th>");
      $sb->appendLine("    <th>Plazo para aprobar</th>");
      $sb->appendLine("    <th>Sem&aacute;foro amarillo</th>");
      $sb->appendLine("    <th>Permisos</th>");
      $sb->appendLine("    <th>Opciones</th>");
      $sb->appendLine("  </tr>");
      $sb->appendLine("</thead>");
      $sb->appendLine("<tbody>");

      for ($i = 0; $i <= $totalRegistros - 1; $i++) {
        $row = $arrListadoPasos[$i];
        $intIdPaso = $row["IdPaso"];
        $intOrdenPaso = $row["Orden"];
        $strNombre = $row["Nombre"];
        $intValorPlazo = $row["ValorPlazo"];
        $strUnidadMedidaValor = $row["UnidadMedidaValor"];
        $strUnidadMedidaTexto = $row["UnidadMedidaTexto"];
        $intValorSemaforoAmarillo = $row["ValorSemaforoAmarillo"];
        $strUnidadMedidaSemaforoAmarillo = $row["UnidadMedidaSemaforoAmarillo"];
        $strUnidadMedidaSemaforoAmarilloTexto = $row["UnidadMedidaSemaforoAmarilloTexto"];
        $indicePaso = $i + 1;
        $strIdAprobadores = "";
        $strNombreAprobadores = "";

        //obtiene los aprobadores
        $this->obtenerListadoAprobadores($arr[$ARRAY_LISTADO_APROBADORES], $intIdPaso, $strIdAprobadores, $strNombreAprobadores);
        //obtiene los check de los permisos
        $strListadoCheck = $this->obtenerListadoCheckPermisos($arr[$ARRAY_LISTADO_PERMISOS], $intIdPaso, $indicePaso);

        $sb->appendLine("<tr class='cursorNoMove'>");
        $sb->appendLine("  <td class='cssLabelPaso'>");
        $sb->appendLine("    <input type='hidden' id='txtIndicePaso_" . $indicePaso . "' name='txtIndicePaso[]' value='" . $indicePaso . "' />");
        $sb->appendLine("    <input type='hidden' id='txtIdPaso_" . $indicePaso . "' name='txtIdPaso[]' value='" . $intIdPaso . "' />");
        $sb->appendLine("    <input type='hidden' id='txtOrdenPaso_" . $indicePaso . "' name='txtOrdenPaso[]' value='" . $intOrdenPaso . "' />");
        $sb->appendLine("    <span id='lblPaso_" . $indicePaso . "'>" . $indicePaso . "</span>");
        $sb->appendLine("  </td>");
        $sb->appendLine("  <td><input type='hidden' id='txtNombrePaso_" . $indicePaso . "' name='txtNombrePaso[]' value='" . urlencode($strNombre) . "' /><span id='lblNombrePaso_" . $indicePaso . "'>" . $strNombre . "</span></td>");
        $sb->appendLine("  <td><input type='hidden' id='txtAprobadores_" . $indicePaso . "' name='txtAprobadores[]' value='" . urlencode($strIdAprobadores) . "' /><span id='lblAprobadores_" . $indicePaso . "'>" . $strNombreAprobadores . "</span></td>");
        $sb->appendLine("  <td>");
        $sb->appendLine("    <input type='hidden' id='txtValorPlazo_" . $indicePaso . "' name='txtValorPlazo[]' value='" . $intValorPlazo . "' />");
        $sb->appendLine("    <input type='hidden' id='txtUnidadMedida_" . $indicePaso . "' name='txtUnidadMedida[]' value='" . urlencode($strUnidadMedidaValor) . "' /><span id='lblPlazo_" . $indicePaso . "'>" . $intValorPlazo . "&nbsp;" . $strUnidadMedidaTexto . "</span>");
        $sb->appendLine("  </td>");
        $sb->appendLine("  <td>");
        $sb->appendLine("    <input type='hidden' id='txtValorSemaforoAmarillo_" . $indicePaso . "' name='txtValorSemaforoAmarillo[]' value='" . $intValorSemaforoAmarillo . "' />");
        $sb->appendLine("    <input type='hidden' id='txtUnidadMedidaSemaforoAmarillo_" . $indicePaso . "' name='txtUnidadMedidaSemaforoAmarillo[]' value='" . urlencode($strUnidadMedidaSemaforoAmarillo) . "' /><span id='lblSemaforoAmarillo_" . $indicePaso . "'>A los: " . $intValorSemaforoAmarillo . "&nbsp;" . $strUnidadMedidaSemaforoAmarilloTexto . "</span>");
        $sb->appendLine("  </td>");
        $sb->appendLine("  <td>" . $strListadoCheck . "</td>");
        $sb->appendLine("  <td>");
        $sb->appendLine("    <a href='javascript:;' onclick='editarFilaPaso(".$indicePaso.")'><img src='" . $themeBaseUrl . "/img/_blank.gif' class='ico18-edit' alt='editar' title='editar' /></a>&nbsp;&nbsp;");
        $sb->appendLine("    <a href='javascript:;' onclick='eliminarFilaPaso(this)'><img src='" . $themeBaseUrl . "/img/_blank.gif' class='ico18-trush' alt='eliminar' title='eliminar' /></a>");
        $sb->appendLine("  </td>");
        $sb->appendLine("</tr>");
      }
      $sb->appendLine("</tbody>");
      $sb->appendLine("</table>");
      $html = $sb->toString();
    } catch (Exception $e) {
      $html = Sistema::CODIGO_SQL_ERROR;
    }
    return $html;
  }

  /**
   * obtiene informacion de los aprobadores
   * @param <type> $arr
   * @param <type> $intIdPaso
   * @param <type> $strIdAprobadores
   * @param <type> $strNombreAprobadores
   * @author VSR, 04/12/2011
   */
  private function obtenerListadoAprobadores($arr, $intIdPaso, &$strIdAprobadores, &$strNombreAprobadores) {
    try {
      $arrAprobadores = Utilidades::arrayRowFilter($arr, "IdPaso == '" . $intIdPaso . "'");
      $totalRegistros = count($arrAprobadores);
      for ($i = 0; $i <= $totalRegistros - 1; $i++) {
        $row = $arrAprobadores[$i];
        $intIdUsuario = $row["IdUsuario"];
        $strNombre = $row["NombreCompleto"];

        $strIdAprobadores .= $intIdUsuario;
        $strNombreAprobadores .= $strNombre;
        if ($i < $totalRegistros - 1) {
          $strIdAprobadores .= ",";
          $strNombreAprobadores .= "<br/>";
        }
      }
    } catch (Exception $e) {
      $strIdAprobadores = "";
      $strNombreAprobadores = "";
    }
    if (Utilidades::isNullOrEmpty($strNombreAprobadores)) {
      $strNombreAprobadores = "&nbsp;";
    }
  }

  /**
   * obtiene el listado de check de permisos
   * @param <type> $arr
   * @param <type> $intIdPaso
   * @author VSR, 04/12/2011
   */
  private function obtenerListadoCheckPermisos($arr, $intIdPaso, $intIndicePaso) {
    $strHtml = "";
    $sb = new StringBuilder();
    try {
      $arrPermisos = Utilidades::arrayRowFilter($arr, "IdPaso == '" . $intIdPaso . "'");
      $totalRegistros = count($arrPermisos);
      for ($i = 0; $i <= $totalRegistros - 1; $i++) {
        $row = $arrPermisos[$i];
        $intIdPermiso = $row["IdPermiso"];
        $strNombre = $row["Nombre"];
        $intSeleccionado = $row["Seleccionado"];
        $intIndice = $i + 1;

        $checked = ($intSeleccionado == 1) ? "checked" : "";
        $sb->appendLine("<input type='checkbox' id='chkPermiso_" . $intIndicePaso . "_" . $intIndice . "' name='chkPermiso_" . $intIndicePaso . "[]' value='" . $intIdPermiso . "' " . $checked . " />&nbsp;<label for='chkPermiso_" . $intIndicePaso . "_" . $intIndice . "'>" . $strNombre . "</label><br />");
      }
      $strHtml = $sb->toString();
    } catch (Exception $e) {
      $strHtml = "";
    }
    return $strHtml;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="ObtenerTablaContactoEmpresa">
  /**
   * obtiene el listado de contactos de una empresa
   * @return <type>
   * @author VSR, 04/05/2012
   */
  private function obtenerTablaContactoEmpresa() {
    $html = "";
    $idEmpresa = $this->Request["idEmpresa"];
    $themeBaseUrl = urldecode(Utilidades::isNull($this->Request["themeBaseUrl"], ""));
    $sb = new StringBuilder();

    try {
      $arr = Utilidades::obtenerSessionPorNombre(WfEmpresaContacto::SESION_LISTADO);
      //si el array no esta en sesion entonces lo obtiene desde base datos
      if (is_null($arr)) { $arr = WfEmpresaContacto::obtenerContactos($idEmpresa); }
      
      if (is_null($arr)) {
        $totalRegistros = 0;
      } else {
        $totalRegistros = count($arr);
      }
      Utilidades::grabarSessionPorNombre(WfEmpresaContacto::SESION_LISTADO, $arr);

      $sb->appendLine("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">");
      $sb->appendLine("  <thead>");
      $sb->appendLine("    <tr>");
      $sb->appendLine("    <th>Nombre</th>");
      $sb->appendLine("    <th>Rut</th>");
      $sb->appendLine("    <th>Email</th>");
      $sb->appendLine("    <th>Tel&eacute;fono</th>");
      $sb->appendLine("    <th>Cargo</th>");
      $sb->appendLine("    <th>Direcci&oacute;n</th>");
      $sb->appendLine("    <th>Observaci&oacute;n</th>");
      $sb->appendLine("    <th>Opciones</th>");
      $sb->appendLine("  </tr>");
      $sb->appendLine("</thead>");
      $sb->appendLine("<tbody>");

      for ($i = 0; $i <= $totalRegistros - 1; $i++) {
        $row = $arr[$i];
        $nombre = $row["Nombre"];
        $paterno = $row["Paterno"];
        $materno = $row["Materno"];
        $rut = $row["Rut"];
        $direccion = $row["Direccion"];
        $email = $row["Email"];
        $telefono = $row["Telefono"];
        $celular = $row["Celular"];
        $cargo = $row["Cargo"];
        $observacion = $row["Observacion"];
        $accionSQL = $row["AccionSQL"];

        //formatea valores
        $pendiente = "";
        if ($accionSQL == "INSERT") {
          $pendiente = "pendiente para crear";
        } else if($accionSQL == "UPDATE") {
          $pendiente = "pendiente para modificar";;
        }
        $pendiente = (Utilidades::isNullOrEmpty($pendiente)) ? "" : "<br /><span class=\"cssAlerta\">(".$pendiente.")</span>";

        $nombre = $nombre." ".$paterno." ".$materno.$pendiente;
        $telefono = (Utilidades::isNullOrEmpty($telefono)) ? "" : "Tel&eacute;fono: ".$telefono."; ";
        $telefono .= (Utilidades::isNullOrEmpty($celular)) ? "" : "Celular: ".$celular."; ";

        $sb->appendLine("<tr>");
        $sb->appendLine("  <td>".$nombre."</td>");
        $sb->appendLine("  <td>".$rut."</td>");
        $sb->appendLine("  <td>".$email."</td>");
        $sb->appendLine("  <td>".$telefono."</td>");
        $sb->appendLine("  <td>".$cargo."</td>");
        $sb->appendLine("  <td>".$direccion."</td>");
        $sb->appendLine("  <td>".$observacion."</td>");
        $sb->appendLine("  <td>");
        $sb->appendLine("    <a href=\"javascript:;\" onclick=\"abrirFormularioContactoEmpresa('".$idEmpresa."','".$i."')\"><img src=\"" . $themeBaseUrl . "/img/_blank.gif\" class=\"ico18-edit\" alt=\"editar\" title=\"editar\" /></a>&nbsp;&nbsp;");
        $sb->appendLine("    <a href=\"javascript:;\" onclick=\"eliminarFilaContactoEmpresa(".$i.",'Tabla')\"><img src=\"" . $themeBaseUrl . "/img/_blank.gif\" class=\"ico18-trush\" alt=\"eliminar\" title=\"eliminar\" /></a>");
        $sb->appendLine("  </td>");
        $sb->appendLine("</tr>");
      }
      $sb->appendLine("</tbody>");
      $sb->appendLine("</table>");
      $html = $sb->toString();
    } catch (Exception $e) {
      $html = Sistema::CODIGO_SQL_ERROR;
    }
    return $html;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="ObtenerTablaWorkflowEmpresa">
  /**
   * obtiene el listado de workflow de una empresa
   * @return <type>
   * @author VSR, 09/05/2012
   */
  private function obtenerTablaWorkflowEmpresa() {
    $html = "";
    $idEmpresa = $this->Request["idEmpresa"];
    $themeBaseUrl = urldecode(Utilidades::isNull($this->Request["themeBaseUrl"], ""));
    $sb = new StringBuilder();

    try {
      $arr = Utilidades::obtenerSessionPorNombre(WfWorkflow::SESION_LISTADO);
      //si el array no esta en sesion entonces lo obtiene desde base datos
      if (is_null($arr)) { $arr = WfWorkflow::obtenerListadoPorEmpresa($idEmpresa); }

      if (is_null($arr)) {
        $totalRegistros = 0;
      } else {
        $totalRegistros = count($arr);
      }
      Utilidades::grabarSessionPorNombre(WfWorkflow::SESION_LISTADO, $arr);

      $sb->appendLine("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">");
      $sb->appendLine("  <thead>");
      $sb->appendLine("    <tr>");
      $sb->appendLine("    <th>Nombre</th>");
      $sb->appendLine("    <th>Plantilla</th>");
      $sb->appendLine("    <th>Fecha Inicio</th>");
      $sb->appendLine("    <th>Fecha T&eacute;rmino</th>");
      $sb->appendLine("    <th>Status</th>");
      $sb->appendLine("    <th>Activo</th>");
      $sb->appendLine("    <th>Opciones</th>");
      $sb->appendLine("  </tr>");
      $sb->appendLine("</thead>");
      $sb->appendLine("<tbody>");

      for ($i = 0; $i <= $totalRegistros - 1; $i++) {
        $row = $arr[$i];
        $idWorkflow = $row["IdWorkflow"];
        $nombre = $row["Nombre"];
        $plantilla = $row["NombrePlantilla"];
        $fechaInicio = $row["FechaInicio"];
        $fechaTermino = $row["FechaTermino"];
        $totalFlujos = $row["TotalFlujos"];
        $totalPasos = $row["TotalPasos"];
        $activo = $row["Activo"];
        $accionSQL = $row["AccionSQL"];

        //construye queryString
        $queryString = "{";
        $queryString .= " \"IdWorkflow\":\"".$idWorkflow."\"";
        $queryString .= ",\"IdEmpresa\":\"".$idEmpresa."\"";
        $queryString .= ",\"CargarFiltrosSesion\":\"0\"";
        $queryString .= "}";
        $queryString = Criptografia::encriptarURL($queryString);

        //formatea valores
        $pendiente = "";
        if ($accionSQL == "INSERT") {
          $pendiente = "pendiente para crear";
        } else if($accionSQL == "UPDATE") {
          $pendiente = "pendiente para modificar";;
        }
        $pendiente = (Utilidades::isNullOrEmpty($pendiente)) ? "" : "<br /><span class=\"cssAlerta\">(".$pendiente.")</span>";

        //formatea valores
        $activo = ($activo == "1") ? "S&iacute;" : "No";
        if($idWorkflow == "-1"){
          $statusConfiguracion = "&nbsp;";
        } else {
          if ($totalPasos == 0) {
            $statusConfiguracion = "<span class=\"cssAlerta\">tiene que configurar los pasos</span>";
          } else {
            $statusConfiguracion = ($totalFlujos == 1) ? "Tiene 1 flujo asociado" : "Tiene ".$totalFlujos." flujos asociados";
          }
        }

        $sb->appendLine("<tr>");
        $sb->appendLine("  <td>".$nombre.$pendiente."</td>");
        $sb->appendLine("  <td>".$plantilla."</td>");
        $sb->appendLine("  <td>".$fechaInicio."</td>");
        $sb->appendLine("  <td>".$fechaTermino."</td>");
        $sb->appendLine("  <td>".$statusConfiguracion."</td>");
        $sb->appendLine("  <td>".$activo."</td>");
        $sb->appendLine("  <td>");
        $sb->appendLine("    <a href=\"javascript:;\" onclick=\"abrirFormularioWorkflowMinimo('".$idEmpresa."',".$totalFlujos.",'".$i."')\"><img src=\"" . $themeBaseUrl . "/img/_blank.gif\" class=\"ico18-edit\" alt=\"editar\" title=\"editar\" /></a>&nbsp;&nbsp;");
        if ($idWorkflow != "-1") { $sb->appendLine("    <a href=\"javascript:;\" onclick=\"abrirFormularioWorkflow('Workflow.AdmFrmWorkflow','".$queryString."')\"><img src=\"" . $themeBaseUrl . "/img/_blank.gif\" class=\"ico18-setting\" alt=\"configurar\" title=\"configurar\" /></a>&nbsp;&nbsp;"); }
        $sb->appendLine("    <a href=\"javascript:;\" onclick=\"eliminarFilaWorkflow(".$i.",".$totalFlujos.",'Tabla')\"><img src=\"" . $themeBaseUrl . "/img/_blank.gif\" class=\"ico18-trush\" alt=\"eliminar\" title=\"eliminar\" /></a>");
        $sb->appendLine("  </td>");
        $sb->appendLine("</tr>");
      }
      $sb->appendLine("</tbody>");
      $sb->appendLine("</table>");
      $html = $sb->toString();
    } catch (Exception $e) {
      $html = Sistema::CODIGO_SQL_ERROR;
    }
    return $html;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="SeleccionarEmpresa">

  /**
   *
   * @return type 
   */
  private function seleccionarEmpresaActiva() {
    try {
      $idEmpresa = $this->Request["idEmpresa"];
      Utilidades::seleccionarEmpresaActiva($idEmpresa);
    } catch (Exception $e) {
      return Sistema::CODIGO_SQL_ERROR;
    }
    return Sistema::CODIGO_SQL_EXITO;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="ValidarPuedeAprobar">
  /**
   * verificar si puede aprobar
   * @return string
   * @author VSR, 03/02/2012
   */
  private function validarPuedeAprobar() {
    $puedeAprobar = "0";
    $idFlujo = urldecode(Utilidades::isNull($this->Request["idFlujo"], "-1"));
    $idHistorial = urldecode(Utilidades::isNull($this->Request["idHistorial"], "-1"));

    try {
      $idUltimoHistorial = WfFlujo::obtenerUltimoIdHistorial($idFlujo);
      $puedeAprobar = ($idHistorial == $idUltimoHistorial) ? "1":"0";
    } catch (Exception $e) {
      $puedeAprobar = "0";
    }
    return $puedeAprobar;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="ObtenerContenidoLogin">
  /**
   * obtiene contenido a mostrar en el login
   * @return <type>
   * @author VSR, 07/02/2012
   */
  private function obtenerContenidoLogin() {
    $html = "";
    $url = $this->Request["url"];

    try {
      $pathBase = Utilidades::obtenerDirectorioBaseAplicacion();
      $template = Utilidades::obtenerContenidoPlantillaHTML($pathBase."template".DIRECTORY_SEPARATOR."login".DIRECTORY_SEPARATOR.$url.DIRECTORY_SEPARATOR."login.html", false, false);

      if (Utilidades::isNullOrEmpty($template)){
        $template = Utilidades::obtenerContenidoPlantillaHTML($pathBase."template".DIRECTORY_SEPARATOR."login".DIRECTORY_SEPARATOR."default".DIRECTORY_SEPARATOR."login.html", false, false);
      }

      $html = $template;
    } catch (Exception $e) {
      $html = "";
    }
    return $html;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="ValidarDuplicidadFactura">
  /**
   * verificar si la factura ya existe en base de datos
   * @return string
   * @author VSR, 29/03/2011
   */
  private function validarDuplicidadFactura(){
    $retorno = "";
    $idFlujo = urldecode(Utilidades::isNull($this->Request["idFlujo"],"-1"));
    $idEmpresa = urldecode(Utilidades::isNull($this->Request["idEmpresa"],"-1"));
    $idWorkflow = urldecode(Utilidades::isNull($this->Request["idWorkflow"],"-1"));
    $idProveedor = urldecode(Utilidades::isNull($this->Request["idProveedor"],"-1"));
    $valor = urldecode(Utilidades::isNull($this->Request["valor"],"-1"));

    try {
      $arr = WfPlantillaFactura::verificarDuplicidad($idFlujo, $idEmpresa, $idWorkflow, $idProveedor, $valor);
      if(!is_null($arr)) {
        $idCache = $arr[0]["IdCache"];
        $idFlujo = $arr[0]["IdFlujo"]; //obtiene el idFlujo encontrado
        $replicarDatos = $arr[0]["Existe"];
        $queryString = Utilidades::obtenerQueryStringFlujo(Utilidades::QUERYSTRING_FLUJO_NORMAL, "", $idFlujo, $idWorkflow, $idEmpresa, "0", $idCache, "0", $replicarDatos, "0", "");
        $arr[0]["QueryString"] = $queryString;
        $retorno = json_encode($arr);
      }
    } catch (Exception $e) {
      $retorno = Sistema::CODIGO_SQL_ERROR;
    }
    return $retorno;
  }
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="ObtenerKeyReporteJSON">
  /**
   * obtiene los datos del reporte seleccionado
   * @return <type>
   * @author VSR, 14/04/2012
   */
  private function obtenerKeyReporteJSON() {
    $strJSON = "";
    $idReporte = urldecode($this->Request["idReporte"]);

    try {
      $arr = WfReporte::obtenerDatos($idReporte);
      if (!is_null($arr)) {
        $strJSON = json_encode($arr);
      }
    } catch (Exception $e) {
      $strJSON = Sistema::CODIGO_SQL_ERROR;
    }
    return $strJSON;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="ObtenerGeneracionReporte">
  /**
   * obtiene si se genero el reporte o no
   * @return <type>
   * @author VSR, 15/04/2012
   */
  private function obtenerGeneracionReporte() {
    $retorno = "";

    try {
      $retorno = Utilidades::obtenerSessionPorNombre(WfReporte::REPORTE_GENERADO);
      if(Utilidades::isNullOrEmpty($retorno)){
        $retorno = "0";
      } else {
       if ($retorno == "1") {
         Utilidades::grabarSessionPorNombre(WfReporte::REPORTE_GENERADO, "0");
       }
      }
    } catch (Exception $e) {
      $retorno = Sistema::CODIGO_SQL_ERROR;
    }
    return $retorno;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="ObtenerKeyEstadisticaJSON">
  /**
   * obtiene los datos de la estadistica seleccionada
   * @return <type>
   * @author VSR, 18/04/2012
   */
  private function obtenerKeyEstadisticaJSON() {
    $strJSON = "";
    $idEstadistica = urldecode($this->Request["idEstadistica"]);

    try {
      $arr = WfEstadistica::obtenerDatos($idEstadistica);
      if (!is_null($arr)) {
        $strJSON = json_encode($arr);
      }
    } catch (Exception $e) {
      $strJSON = Sistema::CODIGO_SQL_ERROR;
    }
    return $strJSON;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="EST_FlujosPorEstado">
  /**
   * obtiene los datos de la estadistica seleccionada
   * @return <type>
   * @author VSR, 18/04/2012
   */
  private function estadisticaFlujosPorEstadoJSON($oUsuario) {
    $arr = "";
    $listadoDatosJSON = urldecode($this->Request["listadoDatos"]);
    $json = "";
    $jsonTablaHTML = "";
    $listadoNombresEjeX = "";
    $listadoDatos = "";
    $sb = new StringBuilder();
    $oEstadistica = new WfEstadistica();

    try {
      $arr = json_decode($listadoDatosJSON);
      $idEstadistica = $arr->idEstadistica;
      $fechaDesde = $arr->fechaDesde;
      $fechaHasta = $arr->fechaHasta;
      $idEmpresa = $arr->idEmpresa;
      $idUsuario = $oUsuario->getId();
      $totalRegistros = 0;

      //formatea valores
      $oEstadistica->obtenerPorId($idEstadistica);
      $fechaDesde = (Utilidades::isNullOrEmpty($fechaDesde)) ? "-1" : $fechaDesde;
      $fechaHasta = (Utilidades::isNullOrEmpty($fechaHasta)) ? "-1" : $fechaHasta;
      $idEmpresa = (Utilidades::isNullOrEmpty($idEmpresa)) ? "-1" : $idEmpresa;

      $arr = WfEstadistica::consultaGenerica("spu_WfEstadistica_FlujosxEstado", $fechaDesde, $fechaHasta, $idEmpresa, $idUsuario);
      if(is_null($arr)){
        $totalRegistros = 0;
      } else {
        $totalRegistros = count($arr);
      }

      if($totalRegistros > 0){
        //convierte el array en json
        $jsonTablaHTML = json_encode($arr);

        //construye estructura json para que lo lea el grafico
        for($i = 0; $i<= $totalRegistros - 1; $i++){
          $row = $arr[$i];
          $nombreEjeX = $row["ESTADO"];
          $valorEjeY = $row["TOTAL"];

          //obtiene indice del color, que va desde el 0 al 9
          $indiceColor = $i % 9;
          $listadoNombresEjeX .= "'".$nombreEjeX."'";
          $listadoDatos .= "{y: ".$valorEjeY.", color: colors[".$indiceColor."]}";

          if ($i < $totalRegistros - 1) {
            $listadoNombresEjeX .= ",";
            $listadoDatos .= ",";
          }
        }

        $sb->append("{");
        $sb->append("  \"tipo\": \"".$oEstadistica->getTipoGrafico()."\" ");
        $sb->append(" ,\"titulo\": \"".$oEstadistica->getTitulo()."\" ");
        $sb->append(" ,\"tituloEjeY\": \"".$oEstadistica->getTituloEjeY()."\" ");
        $sb->append(" ,\"nombreSerie\": \"".$oEstadistica->getNombreSerie()."\" ");
        $sb->append(" ,\"categorias\": \"[".$listadoNombresEjeX."]\"");
        $sb->append(" ,\"datos\": \"[".$listadoDatos."]\"");
        $sb->append(" ,\"jsonTablaHTML\": ".$jsonTablaHTML);
        $sb->append("}");

        $retorno = $sb->toString();
      } else {
        $retorno = Sistema::CODIGO_SQL_SIN_DATOS;
      }
    } catch (Exception $e) {
      $retorno = Sistema::CODIGO_SQL_ERROR;
    }
    return $retorno;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="EST_PorcentajePorAprobador">
  /**
   * obtiene los datos de la estadistica seleccionada
   * @return <type>
   * @author VSR, 19/04/2012
   */
  private function estadisticaPorcentajePorAprobadorJSON($oUsuario) {
    $arr = "";
    $listadoDatosJSON = urldecode($this->Request["listadoDatos"]);
    $json = "";
    $jsonTablaHTML = "";
    $listadoDatos = "";
    $sb = new StringBuilder();
    $oEstadistica = new WfEstadistica();

    try {
      $arr = json_decode($listadoDatosJSON);
      $idEstadistica = $arr->idEstadistica;
      $fechaDesde = $arr->fechaDesde;
      $fechaHasta = $arr->fechaHasta;
      $idEmpresa = $arr->idEmpresa;
      $idUsuario = $oUsuario->getId();
      $totalRegistros = 0;

      //formatea valores
      $oEstadistica->obtenerPorId($idEstadistica);
      $fechaDesde = (Utilidades::isNullOrEmpty($fechaDesde)) ? "-1" : $fechaDesde;
      $fechaHasta = (Utilidades::isNullOrEmpty($fechaHasta)) ? "-1" : $fechaHasta;
      $idEmpresa = (Utilidades::isNullOrEmpty($idEmpresa)) ? "-1" : $idEmpresa;

      $arr = WfEstadistica::consultaGenerica("spu_WfEstadistica_PorcentajePorAprobador", $fechaDesde, $fechaHasta, $idEmpresa, $idUsuario);
      if(is_null($arr)){
        $totalRegistros = 0;
      } else {
        $totalRegistros = count($arr);
      }

      if($totalRegistros > 0){
        //convierte el array en json
        $jsonTablaHTML = json_encode($arr);

        //construye estructura json para que lo lea el grafico
        for($i = 0; $i<= $totalRegistros - 1; $i++){
          $row = $arr[$i];
          $nombreEjeX = $row["APROBADOR"];
          $valorEjeY = $row["PORCENTAJE"];

          //obtiene indice del color, que va desde el 0 al 9
          $indiceColor = $i % 9;
          $listadoDatos .= "['".$nombreEjeX."', ".str_replace(" %", "", $valorEjeY)."]";

          if ($i < $totalRegistros - 1) {
            $listadoDatos .= ",";
          }
        }

        $sb->append("{");
        $sb->append("  \"tipo\": \"".$oEstadistica->getTipoGrafico()."\" ");
        $sb->append(" ,\"titulo\": \"".$oEstadistica->getTitulo()."\" ");
        $sb->append(" ,\"nombreSerie\": \"".$oEstadistica->getNombreSerie()."\" ");
        $sb->append(" ,\"datos\": \"[".$listadoDatos."]\"");
        $sb->append(" ,\"jsonTablaHTML\": ".$jsonTablaHTML);
        $sb->append("}");

        $retorno = $sb->toString();
      } else {
        $retorno = Sistema::CODIGO_SQL_SIN_DATOS;
      }
    } catch (Exception $e) {
      $retorno = Sistema::CODIGO_SQL_ERROR;
    }
    return $retorno;
  }

//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="ValidarDuplicidadProveedor">
  /**
   * verificar si el proveedor ya existe en base de datos
   * @return string
   * @author VSR, 01/05/2012
   */
  private function validarDuplicidadProveedor(){
    $retorno = "";
    $totalRegistros = 0;
    $idEmpresa = urldecode(Utilidades::isNull($this->Request["idEmpresa"],"-1"));
    $idProveedor = urldecode(Utilidades::isNull($this->Request["idProveedor"],"-1"));
    $rutProveedor = urldecode(Utilidades::isNull($this->Request["rutProveedor"],"-1"));
    $razonSocial = urldecode(Utilidades::isNull($this->Request["razonSocial"],"-1"));

    try {
      $arr = WfProveedorEmpresa::verificarDuplicidad($idEmpresa, $idProveedor, $rutProveedor, $razonSocial);
      if(!is_null($arr)) {
        $totalRegistros = count($arr);
      }

      if ($totalRegistros > 0){
        $retorno = json_encode($arr);
      }
    } catch (Exception $e) {
      $retorno = Sistema::CODIGO_SQL_ERROR;
    }
    return $retorno;
  }
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="AutocompletarProveedor">
  /**
   * obtiene listado de proveedores
   * @author VSR, 30/04/2011
   */
  private function autocompletarProveedor() {
    $retorno = "";
    $textoBusquedaOriginal = $this->Request["term"];
    $textoBusqueda = strtolower($this->Request["term"]);
    $idEmpresa = strtolower($this->Request["idEmpresa"]);
    $sb = new StringBuilder();
    $templateJSON = "";
    $auxTemplateJSON = "";

    try {
      $templateJSON .= "{";
      $templateJSON .= " \"label\":\"{label}\"";
      $templateJSON .= ",\"value\":\"{value}\"";
      $templateJSON .= ",\"idProveedor\":\"{idProveedor}\"";
      $templateJSON .= ",\"razonSocial\":\"{razonSocial}\"";
      $templateJSON .= ",\"nombreFantasia\":\"{nombreFantasia}\"";
      $templateJSON .= ",\"giro\":\"{giro}\"";
      $templateJSON .= ",\"direccion\":\"{direccion}\"";
      $templateJSON .= ",\"comuna\":\"{comuna}\"";
      $templateJSON .= ",\"ciudad\":\"{ciudad}\"";
      $templateJSON .= ",\"pais\":\"{pais}\"";
      $templateJSON .= "}";

      $arr = WfProveedorEmpresa::autocompletarProveedor(str_replace("%", "", $textoBusquedaOriginal), $idEmpresa);
      if(is_null($arr)) {
        $totalRegistros = 0;
      } else {
        $totalRegistros = count($arr);
      }

      if($totalRegistros > 0) {
        for($i = 0; $i <= $totalRegistros - 1; $i++) {
          $auxTemplateJSON = $templateJSON;
          //asigna valores del dataset
          $row = $arr[$i];
          $valor = trim($row["Rut"]);
          $idProveedor = trim($row["IdProveedor"]);
          $razonSocial = trim($row["RazonSocial"]);
          $nombreFantasia = trim($row["NombreFantasia"]);
          $giro = trim($row["Giro"]);
          $direccion = trim($row["Direccion"]);
          $comuna = trim($row["Comuna"]);
          $ciudad = trim($row["Ciudad"]);
          $pais = trim($row["Pais"]);
          $valorConEstilo = str_replace($textoBusqueda, "<b>".strtolower($textoBusqueda)."</b>", strtolower($valor));

          //reemplaza las marcas por los valores reales
          $auxTemplateJSON = str_replace("{label}", $valorConEstilo.", ".$razonSocial, $auxTemplateJSON);
          $auxTemplateJSON = str_replace("{value}", Utilidades::escaparComillasJS($valor), $auxTemplateJSON);
          $auxTemplateJSON = str_replace("{idProveedor}", Utilidades::escaparComillasJS($idProveedor), $auxTemplateJSON);
          $auxTemplateJSON = str_replace("{razonSocial}", Utilidades::escaparComillasJS($razonSocial), $auxTemplateJSON);
          $auxTemplateJSON = str_replace("{nombreFantasia}", Utilidades::escaparComillasJS($nombreFantasia), $auxTemplateJSON);
          $auxTemplateJSON = str_replace("{giro}", Utilidades::escaparComillasJS($giro), $auxTemplateJSON);
          $auxTemplateJSON = str_replace("{direccion}", Utilidades::escaparComillasJS($direccion), $auxTemplateJSON);
          $auxTemplateJSON = str_replace("{comuna}", Utilidades::escaparComillasJS($comuna), $auxTemplateJSON);
          $auxTemplateJSON = str_replace("{ciudad}", Utilidades::escaparComillasJS($ciudad), $auxTemplateJSON);
          $auxTemplateJSON = str_replace("{pais}", Utilidades::escaparComillasJS($pais), $auxTemplateJSON);

          $sb->append($auxTemplateJSON);
          if($i < $totalRegistros - 1) { $sb->append(","); }
        }
      } else {
        $sb->append("");
      }
    } catch (Exception $e) {
      $oUsuario = Utilidades::obtenerSessionPorNombre(Usuario::NOMBRE_ENTIDAD);
      if(is_null($oUsuario)) {
        $sb->append("{\"label\":\"<span class='cssMensajeError'>Su sesi&oacute;n ha finalizado.<br/>Cierre la sesi&oacute;n actual y vuelva a ingresar para poder operar de manera correcta en el sistema.</span>\",\"value\":\"\"}");
      } else {
        $sb->append("{\"label\":\"<span class='cssMensajeError'>Ha ocurrido un error interno y no se pudo obtener el valor.<br/>Int&eacute;ntelo m&aacute;s tarde por favor.</span>\",\"value\":\"\"}");
      }
    }
    //asigna valor
    $retorno = "[".$sb->toString()."]";
    return $retorno;

  }
//</editor-fold>
  
  public function onLoad($param) {
    parent::onLoad($param);
    $opcion = urldecode($this->Request["op"]);
    $id = urldecode($this->Request["id"]);
    $response = $this->getResponse();

    try {
      $session = new THttpSession();
      $session->open();
      $oUsuario = Utilidades::obtenerSessionPorNombre(Usuario::NOMBRE_ENTIDAD);
      switch ($opcion) {
        case "EliminarEmpresa":
          $respuesta = $this->eliminarEmpresa($id);
          break;
        case "EliminarPlantilla":
          $respuesta = $this->eliminarPlantilla($id);
          break;
        case "EliminarWorkflow":
          $respuesta = $this->eliminarWorkflow($id, $oUsuario->getId());
          break;
        case "Empresa.Rut":
          $respuesta = $this->verificarDuplicidadRut();
          break;
        case "Empresa.RazonSocial":
          $respuesta = $this->verificarDuplicidadRazonSocial();
          break;
        case "Empresa.Nombre":
          $respuesta = $this->verificarDuplicidadNombre();
          break;
        case "Empresa.Url":
          $respuesta = $this->verificarDuplicidadUrl();
          break;
        case "Plantilla.Nombre":
          $respuesta = $this->verificarDuplicidadPlantillaNombre();
          break;
        case "Plantilla.ClasePagina":
          $respuesta = $this->verificarDuplicidadPlantillaClasePagina();
          break;
        case "ObtenerComboPlantillaJSON":
          $respuesta = $this->obtenerComboPlantillaJSON();
          break;
        case "ObtenerUsuariosJSON":
          $respuesta = $this->obtenerUsuariosJSON();
          break;
        case "ObtenerPermisosPasoJSON":
          $respuesta = $this->obtenerPermisosPasoJSON();
          break;
        case "ObtenerTablaPasos":
          $respuesta = $this->obtenerTablaPasos();
          break;
        case "SeleccionarEmpresaActiva":
          $respuesta = $this->seleccionarEmpresaActiva();
          break;
        case "ValidarPuedeAprobar":
          $respuesta = $this->validarPuedeAprobar();
          break;
        case "ObtenerContenidoLogin":
          $respuesta = $this->obtenerContenidoLogin();
          break;
        case "ValidarDuplicidadFactura":
          $respuesta = $this->validarDuplicidadFactura();
          break;
        case "ObtenerKeyReporteJSON":
          $respuesta = $this->obtenerKeyReporteJSON();
          break;
        case "ObtenerGeneracionReporte":
          $respuesta = $this->obtenerGeneracionReporte();
          break;
        case "ObtenerKeyEstadisticaJSON":
          $respuesta = $this->obtenerKeyEstadisticaJSON();
          break;
        case "EST_FlujosPorEstado":
          $respuesta = $this->estadisticaFlujosPorEstadoJSON($oUsuario);
          break;
        case "EST_PorcentajePorAprobador":
          $respuesta = $this->estadisticaPorcentajePorAprobadorJSON($oUsuario);
          break;
        case "AutocompletarProveedor":
          $respuesta = $this->autocompletarProveedor();
          break;
        case "ValidarDuplicidadProveedor":
          $respuesta = $this->validarDuplicidadProveedor();
          break;
        case "ObtenerTablaContactoEmpresa":
          $respuesta = $this->obtenerTablaContactoEmpresa();
          break;
        case "EliminarContactoEmpresa":
          $respuesta = $this->eliminarContactoEmpresa();
          break;
        case "ObtenerTablaWorkflowEmpresa":
          $respuesta = $this->obtenerTablaWorkflowEmpresa();
          break;
        case "EliminarWorkflowSesion":
          $respuesta = $this->eliminarWorkflowSesion();
          break;
        default:
          $respuesta = Sistema::CODIGO_SQL_ERROR;
          break;
      }
      $response->write($respuesta);
    } catch (Exception $e) {
      $response->write(Sistema::CODIGO_SQL_ERROR);
    }
  }

}

?>
